Skip to main content

Full text of "tilde.town zine issue 6"

See other formats


tildetown 6 


tildetown #6 


Contents 


horse simulator 9k00 
~dozens 


Bean 


~mio 


a small poem for issue 6 


~rogbeer 


TSS-001 


~ydreniv 


Monhegan Island 
~durrendal 


A (small) guide to indie internet radios 


~tsui 


thermal printers 
~lucidiot 


Cardwords 
~mio 


Thin Lab 
~durrendal 


standard editors 
~durrendal & MidJourney 


3} 


14 


ILS) 


23 


28 


34 


38 


45 


This collective work is licensed under a CC BY-SA license. 


More info: 


https://tilde.town/~zine/ 


ES erie) teks 4 “7 hon 7 >! 
astod puv aounbete uat™ 
@ounp ysnw asuoy 243 :9NIONVO WOONTIVE (b 
JOTuDyo peTaaym-om3 
D moup 3SMw aS40y 242 :9NITINd LOTYYHD (E | 
quawnu3suT 
6utasnof utey3 y3TM punow6 ay uo 
uowatT D aouaTd uvo Aay3 3043 Os “apt s3T 
Asavo ySnw assoy 243 :9NTYOTIS NOWST (2 
quewnaqsut butysnof uteyy 
yatm 6Gutu v aunjdoo uvo Aay3 3oy3 os uaptu 


JO 37330q D :ONTTOGTS ONY SNIWAHY (2T 
20046 ToTI0s 

Puod sweuuow +31 13NdI13 WwID0S (TT 
sesu0y J0Z 3Nq uoUMDbhy0q 

@4FT $,3F *NOWWY9XOVE 3SYOH (OT 
quane Guputms 

pezfuouyouds v y3TM ‘u0TzT}eduO0o 
aatp ybty o *ONTWWIMS ONY 3ATO HOTH (6 


erein lies the very stuff horses is 
Welcome, novice you don't de of, roll 3d6 for each ADJECTIV NOUN rel 2 
| horse trainer, to already know, my 
. the lucrative and little sugar eit, of Th 
rewarding a ~ soe aa an Except tfonal — tg Wizard Commitment 
SE SP 3! on and you wi : % SS Too Much A le R 
MM vithin these ¢ wo bennead awn, boldness, initiative, Uindeatsod Eldritch FHP ansom 
Se eiee GaAs ~» @ tusaneeeees gressiveness Electric fos. tanerial arm For The People 
. find eveyrything “fp and naming your Lunar hajesty's Dancer For The Win 
Py) you need to fill sy first horse, and The Bedpi le's Cheese In. A Box 
your fledgling). then entering 7 wild egine. Maher's Shrubber'y @p Under The Sea 
stables with your your first Nig ! 
i SO e upy Daughter 's Dang i 
very own sports mpetition. You anic ; 
. horses, to aed ety eg Balonced @B your Very Own BB eee ate peng 
. compete in horse ' 3 six sided dice What @ Horror al It 
sports and win and a 20 sided i sonst 1 8o Randy wueen Honea 
PD) notoriety ana one. (Or the BE cunning! -— as ropica Clever ropic oat Gee 
| great prizes, and J)) ability to ; Punctual Thund &t avity 
i even try your } search online or 8 Proud Favorite under’ GB Mess 
. hand at sport in your app fectual ri 
horse husbrandry! store for a ...to breed 2 BB Give them t BEB Reliable Ber ee &B@ Aristocrat 
| = es dete Z € em Ca oLidaay 
But wait, I hear §& virtual dice horses, create a P, f Bea Royalty 
ere Mtr ng Regs @ Perfect @ BHangover ¢ 
you ask. What is { roller.) Come random, temporary Hands 6e : GB 8 Slander 
all this then, The wide 3rd horse, and || 8&8 Handsome Mister BB Cake 6B SR Twenties 
| really? Why, you rld of horse average all 3 @BUgly a | Doctor @B BB Smoke Be Ho é 
| mean to tell me sports awaits! horses* Be Eventual @GBEcho &BaBS P hi 
| = attributes to BB Naked sae 
determine the BS Soaking. SOX>*KM ROK OTK = TOMO 
seats Of Waaguea WW Blistering 
| 
i 4 Viad 


UT 49NP @ATT D “ie pad ond Laysva (s 


*4auUTM 243 ST asucy ysebuTdunf 
*ysebutuuns 243 :9NTAWNE ONY SNINNNY (8 
*2u098 03 uapuo ut sdooy 

[eoT{42A abut y6no.y3 passod aq ysnw 37 
puo ‘yonp 0 Jo poazsut TTDq D ST TTDq 943 
3nq ‘xONP 3ex8Dq 03 UDTTWTS :TIVEISYOH (2 
S32TTOW pud STTOq :070d (9 

“SUTM YOU aWoY sTe43 03 49Dq yoONP 

24} J@ATT@P 03 @PTS SuTJ 241 *324SDq D 


MYT 


SAZTdd OT * (TTONE 


- 23nqt433y) = 


326 puo jjutme 


noA ‘a3nqyz4330 
awos $ ,asu0y 


unoA wapun 
Tto4 nok 31 “ezp 
TTo4 ‘ajadwoo o, 


— * 


S3t Asoo ysnw asuoy 243 :9NTISNOL ONTY (T 
s 


C avasiz2 


jn 


Introduction 
This short story is dedicated to ~dozens. 


Several months ago he spoke of a tabletop game that involved 
growing cats from beans, inviting others to try it and share 
their actual plays.! As it happened, someone read the message 
and played the game, but the narrative that was supposed to 
accompany the results never materialised, having fizzled out in 
a desolate post-apocalyptic landscape before it had barely 
started. 


Here instead is a story about growing, cats and beans, not 
necessarily in that order. Discerning readers will observe its 
setting is loosely based in a different game, the wonderful 
Basement Quest? of which ~dozens is the amazing author and 
thoroughly adept game host. He has also kindly given permission 
to reproduce my tiny tale of tomfoolery under the CC BY-SA 
license.? The story would not have existed without his support 
and the patience of fellow players, though any lapses in 
judgement for churning out complete drivel are mine alone. 


Grattas maximas. 
~mio 
1. https://dozensanddragons.neocities.org/30.html 


2. https://tilde.town/~dozens/quest/ 


3. https://creativecommons.org/licenses/by-sa/4.0/ 


Bean 


Deep within the bowels of the bustling city of Vay'Nullar was a 
building like every other and none other. The unassuming brick 
structure stood to one side of Cofe Street, so named after a 
giant automaton that had once occupied an empty plot of land 
for the sole purpose of selling coffee and the wonders of 
mechanical ingenuity before it broke down one day and the lot, 
overrun by weeds, was turned into an apothecary. There was no 
sign above the entrance to announce itself to the world, the 
windows shuttered and the wooden door bolted from within. It 
could be said that there was nothing remarkable about the 
building except for a colourful row of marching kidney-shaped 
beans painted in bas-relief than ran along the base of the 
tiled roof. The beans' faces were contorted in various 
expressions of merriment, from hopping up and down with silly 
grins to flipping on their backs, eyes screwed tight and mouths 


wide open in laughter. 


No one actually knew for sure if it was a shop, or what it 
sold, because the doors had never opened for business. Passers- 
by can be forgiven for thinking it was probably an ill-fated 
foray into fame and fortune by some enterprising young upstart 
that had floundered at the last moment, and the place had long 
since been abandoned to the cobwebs of aurs and dust bunnies. 
However, the neighbourhood's residents knew differently. If 
anyone had cared to ask, they would have recounted in tense, 
hushed voices of eerie sounds emanating from the building at 
night. Some said they heard loud whooshing noises; others swore 
someone or something was lighting crackling bonfires inside, 
though they had neither seen light nor smoke from a fire. Still 
more spoke of a sound — the more musically-inclined might liken 
it to a note blown from a long horn, lowered then abruptly 
dampened. The children — the ones who were old enough or 
secretly sneaked out past their bedtime — would have simply 
described it as if a crowd had gotten together in a room and 


farted at the same time. 


None of the residents had ever heard nor seen the landlord; as 


far as the eldest grannies could remember, the building had 


always appeared the way it did. When the city finally sent an 
inspector to assess the property after multiple complaints from 
the most vocal residents, the man had returned so shocked by 
whatever he had seen that to this day he could not utter a 
syllable, his entire body frozen in fear whenever the subject 
of the bean building was brought up. Cursed, was the conclusion 
of a guild of wizards three districts over, though one that 
seemed to evade their scanners. A few of the bravest and more 
curious among their ranks offered to investigate, but never 
returned with their findings. Children were sternly warned by 
their parents to stay away and behave, or they would be 
snatched up and eaten by the monster that lived within its 


walls. 


One afternoon, a young girl who was studying the painted relief 
along one side of the building heard scratching, mewls, then a 
whimper coming from somewhere nearby. Following the sounds, she 
rounded the back of the building and spotted a grey kitten with 
light charcoal stripes slumped against the wall, paws on their 
furry tummy, with a pinched expression on their face. As she 
came closer, she could hear a low gurgling sound coming from 
somewhere near its tummy. "Oh!" She exclaimed, her face lit up 


in understanding. "Stay here, kitty." she told the kitten. 


She returned from a nearby shop with a glass bottle of oat 
milk, two small dishes and three skewers of tofuna balls. She 
set the items in front of the kitten, removed the skewers from 
the first dish and filled the other with milk. "Go on, it's for 
you." The girl smiled encouragingly at the kitten, who stared 
at her with wide eyes before pouncing on the tofuna balls. When 
the kitten had emptied the plates, they licked their face and 
paws, then looked up at the girl and mewed once before 
disappearing into a small hole in the wall of the building 
partially covered by a loose board. The girl tried to peer into 


the hole but it was too dark within to see anything. 


The next day and the day after, the girl returned to the same 
spot with food for the kitten, who seemed to be expecting her, 
mewing once again before retreating back inside the hole in the 


wall after the meal. On the fourth day, the kitten was nowhere 


to be seen when the young girl arrived. She bent down to filla 
saucer with more milk, and found a single brown bean in it 
slightly smaller than a cherry potato. She waited but there was 
no sign of the kitten. Eventually she left the offering of 


food near the hole and went home. 


As the girl lay in bed that night, she examined the bean by the 
light of her bedside lamp. She held it up between her thumb and 
forefinger, rubbed a thumb against its smooth contours, then 
clasped it gently between her palms, gradually warming it as 
she peeked at it from between her fingers. After whispering to 
the bean for some time, she carefully tucked it under one end 
of her pillow, and yawning, turned down the lamp and went to 


sleep. 


When she next opened her eyes, it was to find herself inside a 
gigantic storehouse with a high ceiling that seemed to stretch 
on and on into the horizon. One side was lined with glass 
partitions, some of which were obscured with thick curtains, 
while others had curtains parted aside to reveal the activities 
of the occupants within. On another side, separated by a path 
the width of two streets, was an open grassy area dotted with 
large translucent domes, like hazy soap bubbles on a summer 
day. The entire area was bright and well-lit even though she 
couldn't make out any significant source of light aside from 
the little caddy lamps twinkling from the desks inside the 
partitions, or the campers' lamps inside and around the domed 


tents. 


A cat wearing bright yellow boots, blue overalls anda 
construction hat was beckoning her over. She recognised them as 
the kitten she had met in the alley earlier, though now they 
appeared as tall as her. Just as she was about to call out and 
ask where they were, the cat suddenly appeared in front of her 


and said eagerly, "There you are! Come along now!" 


Everywhere she turned, there were now cats in all shapes, 
colours and sizes — short, large, skinny, tiny, chubby, 
striped, spotted, black, calico, white, brown, grey, and so on. 


Many were patting rectangular panels with various tiny buttons 


on the desks. Some were on all fours or sitting in various 
positions in front of stools with small boxes that made 
whirring, clicking sounds. After each click, the cats would 
shift positions, as if striking poses for some invisible 
audience. One cat was mixing and matching several new outfits 
in light colours. Another was hugging stuffed toy chipmunk 
while sorting mushrooms at a picnic table. A few were holding a 


burger with an oversized cheese wedge between their paws. 


Some who were walking around the partitions were also holding 
mugs, the aroma of coffee wafting through the air as they 
passed — except for one cat whose paws were wrapped around a 
glass of a clear brown drink topped with cherries. A cat sped 
by on a contraption with a handle and two thin wheels, which 
emitted tinkling sounds from a tiny, nondescript box attached 
to a basket in front of the contraption. They passed a group of 
six cats gesturing to a black board covered in numbers and 
symbols; one of them chanted something that confused the girl 
and pushed a button on one edge of the board, which sprayed 
water over the surface, erasing the chalk writing. After wiping 
the board dry, the cat began rapidly filling the board with 
more symbols. When the girl looked over her shoulder, the board 
had already washed out the writing, and another cat had taken 


up position in front of the board. 


Outside one domed tent, a metal arm was mixing a vat of pink 
and yellow cream while a cat sat beside it reading aloud froma 
scroll. At the next tent, two cats huddled over a thin, grey 
bulbous metal stump placed on a tiny wooden table. The cats 
seemed to be engaged in a serious conversation at first; then 
the girl blinked and they abruptly dissolved into laughs, 
thumping the table with a paw and barely grappling onto the 
table edge with the other to keep themselves from tumbling and 
knocking over the metal rod. A cat reclined against the frame 
of a bubble opening and seemed to be intently listening to 
something, while a stockpot bubbled merrily on a stove and 
spewed out dumplings into a large crusty bread bowl behind 
them. 


A few steps from the path, a cat hung up pictures onto a pie- 


shaped box under the glow of a lamp affixed to their tent. The 
lamp slowly changed colours, each new colour followed by 
strings of words floating and fading in mid-air like intangible 
poetry. Behind them, half-hidden by big rows of vertical posts 
made of paper tubes, a cat perched atop a stack of ten thick 
black writing pads and was writing in a notebook at a furious 
pace, only occasionally stopping to bite into a slice of pie 
with a light yellow filling. A blue panel displaying several 
lines of indecipherable characters flickered occasionally from 
below. Remotely she could barely make out another cat stacking 
containers of different sizes neatly as they spoke to a sliding 
black case on a table covered in tools and fossils. Inside 
another tent, a cat was moving a small stack of old boxes with 
lights blinking blearily through the tent walls and shuffling 
them inside an animated green cabinet in the shape of a possum. 
As the girl stared, some of the cats grinned at her, and others 


waved. 


At random intervals, a group would gather around a large pipe 
made of dark grey metal at the base, which gave way toa 
translucent material at knee height, towering up before 
disappearing into an opening in the ceiling. Venturing closer, 
she realised the translucent pipe was actually made of many 
transparent small pipes with beads of light passing through 
them at impossibly fast speeds. As the lights spun faster, a 
low purr emanated from the pipe, which became louder and louder 
in a roaring crescendo as the group fixed their gazes upwards 
at a spot where pipe met ceiling, some clapping their paws to a 
soundless rhythm that was nonetheless familiar to them all, 
until the noise was abruptly cut off to barely a whine and a 
chuff once more. The crowd of cats dispersed as if nothing had 


happened. 


Further on, another group wielding oversized sporks was 
shovelling piles of pea-sized, dark brown beans at a glass pane 
the size of a large smoke screen, behind which an ornate 
fireplace was set over a well-used hearth. The beans seem to 
pass through the glass, to be devoured by the giant blaze that 
flared and snapped briefly each time it received more tinder. 


Some of the cats looked on with somber expressions, and the 


10 


girl had the feeling that whatever the fire did was as 
important — if not more so — than the stream of lights in the 
pipes. As the flames gradually changed colour from blood orange 
to pale lavender, the group seemed to relax into relieved 
smiles and slowed their shovelling, only halting when the fire 
had turned a vibrant purple. Her guide gave the group a thumbs- 


up before ushering her along the path. 


When they had walked a few score feet onward, the young girl 
suddenly noticed almost all the cats in their immediate 
vicinity had a small rectangular apparatus on them — whether 
held in their paws, hanging from a waist pouch, jutting out 
from a back pocket, strapped to their caps or arms, or placed 
within reach on a nearby desk or table. In that instant, a 
resounding chime like a bell rolled across the area where they 
were standing. The cats glanced down at their apparatus, which 
were lit in varying levels of brightness. Some of the cats 
looked up at one another and sported identical grins on their 
faces. Then, as though following an unannounced but practised 
cue, the cats applied light pressure on their apparatus. For a 
moment it was quiet, before the hall erupted into a very loud 
raspberry. It was as though a giant balloon had deflated over 
their heads and air was coming out of it in one big gush, only 
there was no strong burst of wind to blow them all off their 
feet. Distantly she heard the answering giggling of babies and 
children somewhere around her, though there were no infants or 
other children in sight. The cat with the yellow hat turned to 
her with a chuckle and said, "Snazzy, huh? Let's keep this a 


little secret between us, okay?" 


Before the girl could reply, she awoke with a start in her own 
room. It took a moment for her to ascertain where she was as 
her eyes focused on the shelf by the wall filled with toys and 
books, and the morning sunlight streaming in from the bedroom 
window. Recalling the cat in boots, she felt around her pillow 
for the bean, but her hand only met soft bedsheets. She shook 
out her pillow while pushing aside her blankets, checked the 
floor and peeked under the bed, but the bean had disappeared. 
As she looked around her room, she noticed the mug adorned with 


tiny butterflies that she used as a brush holder had been moved 


11 


from its usual spot on her desk. She got out of bed and padded 
barefoot over to the desk. Instead of one baby potato-sized 
bean, the mug was filled with a number of small red beans. 
Shaking them out in handfuls at a time, she counted 43 in 


total. 


The girl smiled. When the time came, she and the beans will be 


ready. 


12 


from: ~rogbeer 
for: zine of tilde.town, issue 
date: 6 September 2022, GMT +8 


Give me the smile 
That disarms 


And forget the guns 
But- Alas! Aleck! 
Few are the 


Peaceful peace-makers 


Even so, I pray for more 


13 


6 


TSS-001 - The Pearled Gates 


The Pearled Gates are a B55 TSS-class SYNTHETIC 


P 


ICTURE. 


The Pearled Gates are a fabl 


a mystical land where the sky always 


Strange cybercreatures dwell there, 
standing manatees. They use their hypnotizi 


led gateway to 


shi 


ines blue. 


incl 


udi 


ng 


ing 


shroud-daemons to catch weakly-protected programs. 


their favourite food : the rare iridescent 
netmoss. 


14 


Then they use the entropy of their preys to feed 


What? 


Another set of pretty landscapes and such what from Maine. This 
time specifically Monhegan Island which is about 20 NMI off the 
coast. You can take a ferry out of Winter Harbor, ME which is a 
pleasant and quick trip if the weather's nice. (It was rough as 
hell when I went, but worth it all the same). 


The island itself is home to a small year round community, 
mostly supported by lobster fishing. But during the off season 
the community hosts guests in lots of quaint little inns and 
bed and breakfasts. There's even a brewery and a pizzaria on 
the island which is amusing. And you're able to find some of 
the best crab sandwiches I've had yet, sadly I appear to not 
have take any photos of said sandwhich, so I'll just have to go 


back next year just to contribute that to the zine. 


I'll let the photos speak for themselves this year, these are 
really just a couple of highlights from a single day hike in 
the middle of spring. Hopefully I've adequately captured just 
how pretty Monhegan is. 


From a technical standpoint all of the conversion and info 
gathering was done with simple tools. I converted the RAFs to 
JPG with dcraw and GraphicsMagick. I wrote a little script this 
year to bulk convert the photos since I have about 250GB in 


this set alone. 


#!/bin/ash 


for RAF in $(ls | grep RAF); do 
name=$(echo "$RAF" | awk -F'.' '{print $1}') 
gm convert $RAF $name. jpg 


done 


rtot=$(find $(pwd) -type f£ -name '*.RAF' -exec du -ch {} + | 
grep total$ | awk -F'\t' '{print $1}') 
jtot=$(find $(pwd) -type f -name '*.jpg' -exec du -ch {} + | 
grep total$ | awk -F'\t' '{print $1}') 


15 


echo "raf: $rtot | jpg: Sjtot" 


And then gathering information from the RAF files is pretty 


easy, you just need to grep some info from exiftool. 


exiftool DSCF3736.RAF grep "Shutter Speed\|Aperture\|ISO\|Film 
Mode" 


The only hiccup in all of this is that dcraw isn't packaged for 
alpine, but it's pretty easy to compile and maintain as an 


Esper package. 


fetch={url="https://www.dechifro.org/dcraw/dcraw.c", 
git=false, 
outf="dcraw.c"}, 

builddir="", 

depends={ 
alpine="gcc musl-dev libraw graphicsmagick" --last 


two aren't build deps, just useful 


yy 
build={ 
--This requires additional deps, TODO 
--"gcc -o dcraw -04 dcraw.c -lm -ljasper -ljpeg 
-lilcms2" 
"gcc -o deraw -04 dcraw.c -lm —-DNODEPS”™ 
yy 


inst={{perms=755, {"dcraw"}, out="/usr/local/bin/"}} 


Anyways, all of that is less interesting than the actual 


photos! So enjoy! 


16 


Farside 


£11 1/250 200 Astia 


17 


£11 1/250 200 Astia 


18 


f11 1/250 200 Astia 


Flowers 


£2.8 1/250 200 Velvia 


20 


Gulls 


£7.2 1/250 200 Astia 


21 


£7.2 1/250 200 Astia 


22 


A (small) guide to indie internet radios 


You're back home from a tiring day out. You want to relax 
listening to some music. You have acquired lots of music along 
your journey throughout the Internet. However, you don't want 
to listen to any of it right now. You don't want to deal with 
the decision paralysis of youtube or bandcamp either. 
Furthermore, spotify and friends are out of the question. 
Lastly, your old radio doesn't catch any frequency that's 


interesting to you. 


But there's hope. While your old radio can't catch much more 
than what's physically near it, the internet radios got you 


covered. 


Internet radios come in many varieties. Some of them are just 
the internet version of old-school radios, and many of those 
are mostly available to be listened through their website only, 
so they can track you, show you ads, or cut the streaming after 
you haven't been engaged to their website for some time. Worst 
case scenario, they require you to get their android/ios app 
that's riddled with who knows what. 


I won't bother with those. I will focus on just a few Internet 
radios that are available both through a webfront and a direct 
streaming link, so you can tune in using a browser, or a media 


player when the former is inconvenient. 

Tilderadio 

Link: tilderadio.org 

I can't start without mentioning tilderadio. Tilderadio is the 
online radio of the tildeverse. Members of the tildeverse 
request time slots and stream things to their liking. There are 


shows dedicated to music playlists and talk shows. Highly 


recommended. 


23 


Link for media player 


- https://azuracast.tilderadio.org/radio/8000/radio.ogg 


Anonradio 
Link: anonradio.net 


One of oldest pubnixes is is the Super Dimension Fortress 
Public Access UNIX system, or SDF for short. The folks at sdf 
maintain anonradio.net. Like tilderadio, anonradio operates on 
a volunteer basis, with DJs being members of the sdf. There's a 
wide selection of music shows. Rock, synthpop, metal, 
electronic, dubiousness, partying, languages, old and new. 


There's something for almost everybody. 
Link for media player 


- https://anonradio.net:8443/anonradio 


SOMA FM 

Link: somafm.com 

Soma fm is an entirely listener-supported independent radio 
with as many as 30 channels dedicated to different music 


genres. 


- Do you like a mysterious sountrack in the background? The 


secret agent channel might be of interest to you. 
- Are you hacking together that project that has been keeping 
you awake for many nights? Check out the DEF CON radio 


channel. 


- You haven't had enough of 70s style rock and wish you could 


hear more of it? Here's Left Coast 70s. 


24 


- You prefer the synthpop of the 80s? Here's some more too at 


Underground 80s. 


And many more channels for you to explore, playing obscure and 


popular tracks within the genre of the station. 


Link for media player 


There are too many channels to list all of them, see the 


webpage for the other channels for more ways to listen to them. 
- http://ice.somafm.com/secretagent 

- http://ice.somafm.com/defcon 

- http://ice.somafm.com/u8s0s 

Lainchan radio 

Link: lainon.life 

While lainchan is itself an anonymous image board, with all the 
controversy that entails, their radio project has given me many 
hours of enjoyment and i believe it should be treated 


seperately from the place it comes from. It has 4 channels. 


- Cyberia, for electronic music in the style of the popular 


japanese anime series Serial Experiments Lain's Cyberia Club. 
- Cafe, for touhou arrangements, relaxing soundtracks and 
mellow pop-rock songs. This is my favorite channel and the 


radio i listen to the most. 


- Swing, for swing, jazz and blues music. Very soothing, 


energizing or both! 


- Everything, a combination of all previous channels. 


Link for media player 


- https://lainon.life/radio/cyberia.ogg 


25 


- https://lainon.life/radio/cafe.ogg 

- https://lainon.life/radio/swing.ogg 

- https://lainon.life/radio/everything.ogg 

KMFA 89.5 

Link: www.kmfa.org 

This is an old-school radio station located in Austin, Texas, 
that happens to have an online streaming channel that fits 
within the constraints of this guide. 

Their focus is classical music. Their offer ranges from 
Baroque, to the Modern period, including classical arrangements 
of contemporary pop songs. Chamber, Cantata, Concerto, Mass, 
Opera, and so on, you can find all of those here. This is the 
single best radio for all of you classical music fans. 


Link for media player 


- https://kmfa.streamguys1.com/KMFA-mp3 


R/a/dio 
Link: r-a-d.io 


This radio station is also part of the community of an 


anonymous image board, but it can be safely ignored. 

They focus mostly on anime and game soundtracks, if that's your 
jam, you will probably like this. It's also possible to request 
songs, but i haven't used this feature, so i don't know if it 
works. 


Link for media player 


- https://relayO.r-a-d.io/main.mp3 


26 


Hackers.town radio 
Link: hackers.town 


Hackers.town is a fediverse instance that also happens to have 
an radio stream that i discovered by chance. Their music 
selection is very eclectic, so whatever label i might throw 
will probably be too narrow. I can't recommend it enough, very 


nice tunes there! 
Link for media player 


- https://radio.hackers.town:8000/ 


Wrapping up 


These are only a handful of the hundreds, if not thousands, of 
online radios that you can find online, and they were subject 
to my own tastes and technical preferences. But surely there's 
a radio out there that's more suited to your own likes. If you 
feel like exploring this world, i would be thrilled to know 
your findings and get to know more radios. If you'd like to do 


so, please mail me to tsui@sdf.org. 


Happy listening! 


27 


thermal printers! 


some townies like to play with typewriters and s 
ubmit to the zine with them. i play with a therm 
al printer, so here’s a submission with it. 


thermal printers are also known as receipt print 
ers. they use thermal paper, which reacts to hea 
t and darkens, so ink/toner is not needed, most 
paper is 58mm or 80mm wide, but i have seen an A 
5 printer ina french metro station. some printe 
rs and papers support two-color printing, where 
the second color is usually red, bluetooth, athe 
rnet, wifi, USB, serial and parallel are all com 
monly found. my printer has a CUPS driver, which 

lets me print pretty much anything, but you can 
contro! most printers without a driver just us| 
ng printf: 


acha Jucidiat racks | sudo tee /dev/usb/1p0 


thermal printers speak ESC/POS, a protocol desig 
ned by epson far its own printers that everyone 
else followed, there are many manuals out there, 
just look for ‘esc/pos reference’. you can also 
use ‘python-escpos*, “escpas~php or “node-escp 
as’, “Windows. Devices, PointOfService.POSPr inter” 
, etc, 


ASCII 1B escape followed by... 


a Raset 

~O Under line off 
mal Under | ine on 

ad Under ling, very 
EO Bold off 

El Bold or 


GO Bold off (alias) 


28 


Gl Bald on (alias) 
MO Use 12x24dots font 
M1 Use @x24dote font 
Ox?7b 0 Upside down off 
ug uMop apisda T GLx0 


1 <x> Set formatting bit flags: 


10x00 Reset 

{0x01 ee Bx24dots font 
10x08 Bald 

roxio Tall 

fox20 Thkice 
10x30 Lor se 


d <x> Skip <x? lines 
ASCII 1D group separator followed by... 


BO Inverted off 

Bl averted on 

V 0x00 Cut completely 

¥ 0x01 Cut, leave ane point uncut 


there are a lot more commands depending on your 
printer model. some printers can beep, open cash 
drawers, control customer displays, read magnet 
ic stripes on checks, generate barcodes and QR c 
odes, print sideways, print images, define macro 
s and run them, etc, 


text encoding is a mess, thermal printers do not 

know unicode! you can either render your text i 
nto an image and print that, switch between the 
supported codepages depending on your printer mo 
del/firmware, or define your own custom characte 
rs. here is the default codepage for my SII RP-F 
10: 


0129458 788abedef 
6 


29 


1 
2 179%’ xt, ~-./ 
3 0123456789: ; <=>? 
4 AABCDEFGHIJKLMNO 
§ PQRSTUVWKYZ°¢§*_ 
g ‘abcdefghi jk!mno 
7 parstuvwxyzeue” 

a Ciidddadc Abel T TAA 
g Eakaooduyouee wtf 
a A{GUANEQE 9% 14) 
bo Bata ls 
c Mee bt lp Eel 
dee bet! fled 
e abl WLopToONG- i «) 
¢ Stzsfjsw°es Jy 


the creator of escpos-php started a database of 
thermal printer capabilities, including codepage 
s, which can help in troubleshooting: 
https: //mike42, me/escpos-pr inter-dh/ 


secret beep! 


there are multiple documented commands for beeps 
on differant models. some printers will just ac 
cept the ASCII BEL character, 0x07, some want ES 
C BEL (0x1B07). some want 0x1B2841040030 fol lowe 
d by the sound type, beep count and beep duratio 
n. | tried them all, but couldn’t get anything t 
o work on my SII RP-F10. i used wireshark to cap 
ture the SMB packets sent by the windows driver 

to my samba server while it printed somathing, b 
ecause the driver has an option to beep when ap 
rint job starts and ends, so here is the hidden 

beep command available on SII RP-D10, RP-E10, RP 
-F10 and maybe others: 


ESC RS <duration>? <unknown> 


ESC is ASCII 1B escare 


30 


RS is ASCII 1E gecor separator 

<duration> specifies the beep duration, in multi 
ples of 2ms; 0-255 maps to 0-510ms. 

<unknawn> is, wall, unknown, because it has no i 
mpact on how the beep sounds. 

the windows driver sends ESC RS 0x80 0x80. 


a machine that beeps and slices paper over USB a 
nd LAN, what else could i possibly ask for? 


31 


some examples of random transparent PNG images p 
rinted using CUPS! 


32 


colophon 


everything in this submission was originally printed using a 
Seiko SII RP-F10 thermal printer on 80mm thermal paper. the 
prints were then scanned on a Canon MF643Cdw at 300dpi using 
xsane, and edited into the final JPEG images in this submission 


using Jasc Paint Shop Pro 9 on Windows XP Pro SP3. 


while the few demo prints of a lemon pie, coffee cup and ramen 
bowl were printed using ~lp something.png™ via CUPS, all the 
text was written in Vim, painstakingly inserting raw ESC/POS 
commands using ~“V x <hex>>. The codepage table was generated 
by an example script from the python-escpos project, then 
slightly altered. The raw ESC/POS commands sent to the printer 


to print all the text are in ~escpos_raw.bin. 


33 


Cardwords 


Cardwords is a solo word game using playing cards as a letter 
pool. The player draws cards and form words based on the 
available letters represented by individual cards. It is 
inspired by Sebastien Spirit’s Secret Message and 
SCRABBLEgrams. 


Cardwords is licensed under the Creative Commons Attribution 
(cC BY 4.0) license. 


Requirements 
You will need: 


- A deck of playing cards without jokers 
- Something to write with, e.g. pen and paper 


- (Optional) A dictionary to validate words 


How to Play 
Shuffle the deck of cards and set aside 4 cards, face up. 
Deal a set of 8 cards in a row facing up. 


Each card in the deck represents two letters of the alphabet, 
starting with the Ace as A or N, 2 as B or O, and up to K as M 
or Z (see the Letter Table). The aim is to form a word based on 
each set of cards drawn. For each card, only one of the two 
possible letters can be used, e.g. if the set has only 1 Ace, 
pick either A or N, not both. If there are 2 Aces in the row, 


the available letters can include 2 A, 2 N, or 1 A and N each. 


The 4 extra cards set aside at the start are additional letter 
choices that can be used to replace another card’s letters, 
which could be useful for making longer words. Multiple cards 
can be used on a word, but each card can only be used once 


during the game. 


34 


A dictionary can optionally be used to check whether a word 


played is valid. 


Add up the score for the word (see the Scoring Words section). 
Place the set of cards in a discard pile along with any of the 
extra cards if they were used, and deal a new set of cards to 


form the next word. 
Dispense 6 sets of cards in total, then add up the word scores 


for the final score. Try to get a total score of 200 or higher 


to win. 


Letter Table 


Q 
» 
kK 
Qa 


Letters 


4 


ROGdrF oO MAN A UH WD PB 
° 


SUPRA GOH Qe HOA Dp Pp 
NK MM FS GHNDWD WO HW O 


Scoring Words 


Score words by adding up letter values from their assigned 


cards: 


- Number cards have a value of 4 points 


- Court cards (J, Q and K) are worth 8 points 


35 


Bonus multipliers are activated in certain scenarios: 


- Using cards of the same colour or suit: x2 the total word 


value 
- Using all letters, 


value 


At the end of the game, 


points to the total. 


Example Gameplay 


Extra cards: 
Available letters: 


Set 1 

Cards drawn: 
Available letters: 
Word: 


Score: 


Set 2 

Cards drawn: 
Available letters: 
Word: 


Score: 


Set 3 

Cards drawn: 
Available letters: 
Word: 


Score: 


Set 4 

Cards drawn: 
Available letters: 
Word: 


Score: 


i.e. 


8-letter words: 


if no extra cards were used, 


x3 the total word 


add 32 


KD QD 2c 48 
MZ LY BO DQ 

QH 8D 3D 9S 3S 10H 10C 9H 
LY HU CP IV CP JW JW IV 
WHIPPY 

8 + (4 * 5) = 28 

KS 7S 7D KH 9D 8H 2S 4D 
MZ GT GT MZ IV HU BO DQ 
BUZZ 

(4 * 2) + (8 * 2) = 24 

2H 7H 4C JH 4H 9C 5D AD 
BO GT DQ KX DQ IV ER AN 
BEDDING 

4* 7 = 28 

3H 5H 6S 6D JS JD 3C KC 
CP ER FS FS KX KX CP MZ 
MEX 

4+ (8 * 2) = 20 


36 


Set 5 


Cards drawn: AC AH 6H 2D 8C 7C QC 5C 

Available letters: AN AN FS BO HU GT LY ER 

Word: BANGLES 

Score: (4 * 6) + 8 = 32 

Set 6 

Cards drawn: 8S 10S 5S JC 6C OS AS 10D 

Available letters: HU JW ER KX FS LY AN JW 

Word: WHALE 

Score: ((4 * 4) + 8) * 2 (same suit bonus) = 48 
Total score: 28 + 24 + 28 + 20 + 32 + 48 + 32 


(unused cards bonus) 


= 212 points 


37 


An Affordable Portable Homelab 


If you're anything like me then you probably love to tinker 
with Linux things right? Spin up a server, configure it to do 
something cool, maybe host something at your home for your 
family to use. It's an expansive world of topics that's as deep 
or as shallow as you care to delve! At least that's how I think 


about Home Labbing. 


The only real problem is that it can be an awfully expensive 
hobby to get into. You need a server right? One of those 
massive noisy jet engine machines with Xeon CPUs and fist fulls 
of ram, and discs on discs on discs! And you need to fill up an 
entire server rack with those boxes to really do it right, 
right? What if we just didn't? It's awfully expensive to 
purchase all that gear, and the power bill is unfathomably 
painful. Plus when was the last time you got a lu server 
through airport security? "Oh yes Mr. TSA Agent, this Dell R620 


is my carry on.", nobody is allowing that, ever. 


That's why I've built a tiny, affordable, & portable homelab on 
a Dell Wyze 3040! 


38 


That's right, that tiny box is a homelab! Spec wise it's not 
particularly impressive, but inclusive of all the little add on 
parts it's more affordable than a raspberry pi, and has an 


x86_64 cpu so it ends up being very easy to work with. 


CPU......: Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz 
MEM......: 2G (1.8G usable) 
EMMC.....: 8GB 


The quad core Atom cpu is capable enough to run a light weight 
headless Linux OS like Alpine, you're just somewhat limited due 
to the itty bitty amount of ram it has. You also get a full 
gigabit NIC, and a few USB ports, so it ends up being easy to 
throw in an external hard drive, or a USB adapter to make up 
for what it lacks. I use mine as an LXD node (we'll talk a 
little more about that further down), so I included the cost of 
an external USB for those containers in my costs, and since I 


travel there's also a wireless USB adapter too. 


I managed to get a really good deal on Ebay for my Wyze, but if 
you can find one on the lower side you probably only need to 
worry about purchasing a 5v power supply for it, which can be 
gotten off of Newegg for about $10. Everything else is just 
odds and ends you probably already have. And honestly the only 
piece you truly need is some USB compatible storage to make up 
for the woefully small EMMC that the system comes with. 


Right, enough about that, lets talk about that LXD setup. If 


you're not familiar with what LXD is, I highly suggest you take 


a quick jaunt over to Canonical's website where they have a 


39 


bunch of detailed documents about it. Since this is a zine and 
it makes no sense to hyperlink that here I'll just explain it 
in brief. LXD is an orchestration tool built on top of the LXC 
container technology. LXC lets you spin up itty bitty Linux 
containers that share the hosts kernel, but are isolated from 
the rest of the system. Using this you spin up little Linux 
systems, configure them however you want, and then destroy them 
when you're done, or keep them around for hosting. That's kind 
of the ethos of homelabbing in my mind, you try something hands 
on, if you mess it up you throw it away and start over. What 
you do when it succeeds is kind of a personal choice. Perhaps 
you leave whatever you built running, or document the process 
for a personal/public wiki, or you could be like me and 
automate every little experiment with Ansible or something. The 
world is your oyster! And that oyster fits inside of your carry 


on! 


Setup LXD on Alpine 


Here's a little script I wrote to setup LXD on an Alpine 
system. It's just a base, but it's good enough to go from the 


initial installation directly to using LXD. 


#!/bin/ash 
#Setup clusterable 1lxd on alpine linux 
ymdhms=$(date +%Y-%m-%d_%H:%M:%S ) 
install_apks() { 

printf "Install apks..\n" 

apk update 

apk add linux-lts-dev lxd-feature lxc lxc-lvm lxcfs 
bridge lxc-templates lxc-download xz gnupg rsync debootstrap 
grep zfs zfs-lts zfs-scripts zfs-libs zfs-udev eudev eudev- 
hwids hwdata dbus shadow util-linux util-linux-misc coreutils 
iproute2 findutils usbutils pciutils sysfsutils gawk procps 
grep binutils wget curl syslog-ng acpid awall haveged logrotate 
qemu gqemu-img gemu-tools qemu-system-x86_64 qemu-ui-spice-core 
qemu-chardev-spice qemu-audio-spice qemu-ui-spice-app qemu-hw- 


usb-host qemu-hw-usb-redirect qemu-hw-display-virtio-gpu qemu- 


40 


hw-display-virtio-vga libvirt ovmf swtpm distrobuilder 
distrobuilder-lxd make go git zram-init iptables ipétables 
aufs-util e2fsprogs fennel lshw lua5.3-libs mosh openssl sudo 


tmux 


} 


setup_lxc() { 
printf "overlay\nip_tablesexifuse\n" | tee -a /etc/ 
modules 


modprobe overlay ip_tables fuse 


if [ -f /etc/lxc/default.conf ]; then 
printf "Previous lxc config moved to /etc/1xc/ 
default.conf.bak-$ymdhms\n" 
mv /etc/lxc/default.conf /etc/1lxc/ 
default.conf.bak-$ymdhms 
fi 


tf —£ /ete/contad/ixe ii sthen 
printf "Previous lxc generic configuration moved 
to /etc/conf.d/1lxc.bak-$ymdhms\n" 
mv /etc/conf.d/lxc /etc/conf.d/lxc.bak-$ymdhms 
‘fal 


#This allows for unprivileged docker container execution 
an) the iixe containers 
printf "lxc.idmap = u 0 1000000 65536 
ilxc.idmap = g 0 1000000 65536 
ixc.cgroup.devices.allow = a 
ixc.mount.auto = sys 
ilxc.cap.drop = 


security.nesting = true\n" > /etc/1lxc/default.conf 


printf '# Configuration for /etc/init.d/1lxc[.*] 


# Enable cgroup for systemd-based containers. 


systemd_container=yes 


# autostart groups (comma separated) 


#1xc_group="onboot" 


41 


# Directory for container logs (used for symlinked runscripts 
IPG ES Nic 

llogdir=""/var/log/ixe' > V/etc/icont.d/ixc 

} 


unprivilege() { 
if [ -d /etc/subuid ]; then 
touch /etc/subuid 
ieal. 


if [ -d /etc/subgid ]; then 
touch /etc/subgid 
neal 


sugid="root:1000000:65536" 


if grep -q $sugid /etc/subuid; then 

printf "subuid exists, skipping...\n" 
else 

printf "$sugid\n" | tee -a /etc/subuid 
ea, 


if grep -q $sugid /etc/subgid; then 

printf "subgid eists, skipping...\n" 
else 

printf "$sugid\n" | tee -a /etc/subgid 
aeal 


#Enable cgfs in pam 

printf "session optional pam_cgfs.so -c 
freezer,memory,name=systemd,unified\n" | tee -a /etc/pam.d/ 
system-login 


} 


set_services() { 
for service in cgroups lxd lxc lxcfs dbus zram-init; do 
rc-update add $service default 


done 


42 


for service in dbus cgroups 1lxd lxcfs; do 
re-service $service start 


done 


examples() { 
prince * 


Getting Started: 


deed anv’ 


Launch a container: 


ixc launch images:alpine/edge containername 


Restrict Memory, CPU, etc: 
ilxc set containername limits.memory 100MB 
ixc set containername limits.cpu 1 


lxc config device override containername size=2GB 


Jump into a container: 


ixc exec containername /bin/ash 


Move files between host & container: 


ixc file push /path/on/host containername/path/in/container 


ixc file pull containername/path/in/container /path/on/host 


Nestable containers: 
=> On the Ixc host 
lxc config set containername security.nesting=1 
-> Inside the container 
apk add fuse-overlayfs 
printf '{ \"storage-driver\": \"fuse-overlayfs\"}' > /etc/ 
docker/daemon. json 
for service in cgroups cgroup-patch docker do; 
rc-update add $service default 


done 


Privileged containers: 


ilxc config set containername security.privileged=1 


43 


install_apks 
unprivilege 
setup_lxc 
set_services 


examples 


Really the only thing left for you to do to take one of these 
nifty little boxes and get yourself an itty bitty container 
lab, is to run through the LXD init process. It's fairly self 
explanatory, but make sure that you pass it the full name of 
your USB thumb drive when your setup your ZFS pool. To do that 
all you need to do is run fdisk -l, find the USB device in the 
output, and then pass the /dev/sdx name to the 1xd pool 


argument. Everything else you can setup as defaults! 


Have fun tinkering townies! 


44 


Standard Vim 


46 


the standard text editor." 


1S 


"Ed